package manejadores;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import censo.db;
import entidades.BajaTension;

public class ManejadorBajaTension {
	
	private BajaTension baja;
	private db conexion = null;
	public BajaTension getBaja() {
		return baja;
	}
	public void setBaja(BajaTension baja) {
		this.baja = baja;
	}
	public db getConexion() {
		return conexion;
	}
	public void setConexion(db conexion) {
		this.conexion = conexion;
	}
	public ManejadorBajaTension(BajaTension baja, db conexion) {
		super();
		this.baja = baja;
		this.conexion = conexion;
	}
	public ManejadorBajaTension(db conexion) {
		super();
		this.conexion = conexion;
	}
	
	public boolean Add() throws SQLException {
		boolean result = false;
		String sql = "INSERT INTO baja_tension (TRANSFORMADOR,POSTE_MATERIAL,POSTE_ALTURA,POSTE_COMPARTIDO,CAJA_TIPO,CAJA_DUCTOS," +
				"CAJA_COMPARTIDA,TIERRA,CANTIDAD_USUARIOS,AP_TIPO,AP_CANTIDAD,AP_POTENCIA,TRAMO_NODO_INICIAL,TRAMO_NODO_FINAL," +
				"TRAMO_TIPO,TRAMO_LONGITUD,FASE_TIPO,FASE_CONDUCTORES,FASE_CALIBRE,FASE_MATERIAL,NEUTRO_CALIBRE,NEUTRO_MATERIAL," +
				"AP_CALIBRE,AP_MATERIAL,NOTAS,FECHA_SISTEMA,USUARIO ) VALUE (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE(),?)";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, baja.getTransformador());
		pst.setString(2, baja.getPoste_material());
		pst.setString(3, baja.getPoste_altura());
		pst.setString(4, baja.getPoste_compartido());
		pst.setString(5, baja.getCaja_tipo());
		pst.setString(6, baja.getCaja_ductos());
		pst.setString(7, baja.getCaja_compartida());
		pst.setString(8, baja.getTierra());
		pst.setString(9, baja.getCantidad_usuarios());
		pst.setString(10, baja.getAp_tipo());
		pst.setString(11, baja.getAp_cantidad());
		pst.setString(12, baja.getAp_potencia());
		pst.setString(13, baja.getTramo_nodo_inicial());
		pst.setString(14, baja.getTramo_nodo_final());
		pst.setString(15, baja.getTramo_tipo());
		pst.setString(16, baja.getTramo_longitud());
		pst.setString(17, baja.getFase_tipo());
		pst.setString(18, baja.getFase_conductores());
		pst.setString(19, baja.getFase_calibre());
		pst.setString(20, baja.getFase_material());
		pst.setString(21, baja.getNeutro_calibre());
		pst.setString(22, baja.getNeutro_material());
		pst.setString(23, baja.getAp_calibre());
		pst.setString(24, baja.getAp_material());
		pst.setString(25, baja.getNotas());
		pst.setString(26, baja.getUsuario());
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Add(BajaTension baja) throws SQLException {
		boolean result = false;
		String sql = "INSERT INTO baja_tension (TRANSFORMADOR,POSTE_MATERIAL,POSTE_ALTURA,POSTE_COMPARTIDO,CAJA_TIPO,CAJA_DUCTOS," +
				"CAJA_COMPARTIDA,TIERRA,CANTIDAD_USUARIOS,AP_TIPO,AP_CANTIDAD,AP_POTENCIA,TRAMO_NODO_INICIAL,TRAMO_NODO_FINAL," +
				"TRAMO_TIPO,TRAMO_LONGITUD,FASE_TIPO,FASE_CONDUCTORES,FASE_CALIBRE,FASE_MATERIAL,NEUTRO_CALIBRE,NEUTRO_MATERIAL," +
				"AP_CALIBRE,AP_MATERIAL,NOTAS,FECHA_SISTEMA,USUARIO ) VALUE (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE(),?)";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, baja.getTransformador());
		pst.setString(2, baja.getPoste_material());
		pst.setString(3, baja.getPoste_altura());
		pst.setString(4, baja.getPoste_compartido());
		pst.setString(5, baja.getCaja_tipo());
		pst.setString(6, baja.getCaja_ductos());
		pst.setString(7, baja.getCaja_compartida());
		pst.setString(8, baja.getTierra());
		pst.setString(9, baja.getCantidad_usuarios());
		pst.setString(10, baja.getAp_tipo());
		pst.setString(11, baja.getAp_cantidad());
		pst.setString(12, baja.getAp_potencia());
		pst.setString(13, baja.getTramo_nodo_inicial());
		pst.setString(14, baja.getTramo_nodo_final());
		pst.setString(15, baja.getTramo_tipo());
		pst.setString(16, baja.getTramo_longitud());
		pst.setString(17, baja.getFase_tipo());
		pst.setString(18, baja.getFase_conductores());
		pst.setString(19, baja.getFase_calibre());
		pst.setString(20, baja.getFase_material());
		pst.setString(21, baja.getNeutro_calibre());
		pst.setString(22, baja.getNeutro_material());
		pst.setString(23, baja.getAp_calibre());
		pst.setString(24, baja.getAp_material());
		pst.setString(25, baja.getNotas());
		pst.setString(26, baja.getUsuario());
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Update(String key) throws SQLException {
		boolean result = false;
		String sql = "UPDATE baja_tension SET TRANSFORMADOR=?,POSTE_MATERIAL=?,POSTE_ALTURA=?,POSTE_COMPARTIDO=?,CAJA_TIPO=?,CAJA_DUCTOS=?," +
				"CAJA_COMPARTIDA=?,TIERRA=?,CANTIDAD_USUARIOS=?,AP_TIPO=?,AP_CANTIDAD=?,AP_POTENCIA=?,TRAMO_NODO_INICIAL=?,TRAMO_NODO_FINAL=?," +
				"TRAMO_TIPO=?,TRAMO_LONGITUD=?,FASE_TIPO=?,FASE_CONDUCTORES=?,FASE_CALIBRE=?,FASE_MATERIAL=?,NEUTRO_CALIBRE=?,NEUTRO_MATERIAL=?," +
				"AP_CALIBRE=?,AP_MATERIAL=?,NOTAS=? WHERE ID=?";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, baja.getTransformador());
		pst.setString(2, baja.getPoste_material());
		pst.setString(3, baja.getPoste_altura());
		pst.setString(4, baja.getPoste_compartido());
		pst.setString(5, baja.getCaja_tipo());
		pst.setString(6, baja.getCaja_ductos());
		pst.setString(7, baja.getCaja_compartida());
		pst.setString(8, baja.getTierra());
		pst.setString(9, baja.getCantidad_usuarios());
		pst.setString(10, baja.getAp_tipo());
		pst.setString(11, baja.getAp_cantidad());
		pst.setString(12, baja.getAp_potencia());
		pst.setString(13, baja.getTramo_nodo_inicial());
		pst.setString(14, baja.getTramo_nodo_final());
		pst.setString(15, baja.getTramo_tipo());
		pst.setString(16, baja.getTramo_longitud());
		pst.setString(17, baja.getFase_tipo());
		pst.setString(18, baja.getFase_conductores());
		pst.setString(19, baja.getFase_calibre());
		pst.setString(20, baja.getFase_material());
		pst.setString(21, baja.getNeutro_calibre());
		pst.setString(22, baja.getNeutro_material());
		pst.setString(23, baja.getAp_calibre());
		pst.setString(24, baja.getAp_material());
		pst.setString(25, baja.getNotas());
		pst.setString(26, key);
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Update(String key, BajaTension baja) throws SQLException {
		boolean result = false;
		String sql = "UPDATE baja_tension SET TRANSFORMADOR=?,POSTE_MATERIAL=?,POSTE_ALTURA=?,POSTE_COMPARTIDO=?,CAJA_TIPO=?,CAJA_DUCTOS=?," +
				"CAJA_COMPARTIDA=?,TIERRA=?,CANTIDAD_USUARIOS=?,AP_TIPO=?,AP_CANTIDAD=?,AP_POTENCIA=?,TRAMO_NODO_INICIAL=?,TRAMO_NODO_FINAL=?," +
				"TRAMO_TIPO=?,TRAMO_LONGITUD=?,FASE_TIPO=?,FASE_CONDUCTORES=?,FASE_CALIBRE=?,FASE_MATERIAL=?,NEUTRO_CALIBRE=?,NEUTRO_MATERIAL=?," +
				"AP_CALIBRE=?,AP_MATERIAL=?,NOTAS=? WHERE ID=?";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, baja.getTransformador());
		pst.setString(2, baja.getPoste_material());
		pst.setString(3, baja.getPoste_altura());
		pst.setString(4, baja.getPoste_compartido());
		pst.setString(5, baja.getCaja_tipo());
		pst.setString(6, baja.getCaja_ductos());
		pst.setString(7, baja.getCaja_compartida());
		pst.setString(8, baja.getTierra());
		pst.setString(9, baja.getCantidad_usuarios());
		pst.setString(10, baja.getAp_tipo());
		pst.setString(11, baja.getAp_cantidad());
		pst.setString(12, baja.getAp_potencia());
		pst.setString(13, baja.getTramo_nodo_inicial());
		pst.setString(14, baja.getTramo_nodo_final());
		pst.setString(15, baja.getTramo_tipo());
		pst.setString(16, baja.getTramo_longitud());
		pst.setString(17, baja.getFase_tipo());
		pst.setString(18, baja.getFase_conductores());
		pst.setString(19, baja.getFase_calibre());
		pst.setString(20, baja.getFase_material());
		pst.setString(21, baja.getNeutro_calibre());
		pst.setString(22, baja.getNeutro_material());
		pst.setString(23, baja.getAp_calibre());
		pst.setString(24, baja.getAp_material());
		pst.setString(25, baja.getNotas());
		pst.setString(26, key);
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Remove(String key) throws SQLException {
		boolean result = false;
		String sql = "DELETE FROM baja_tension WHERE ID = ?"; 
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, key);
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Find(String key) throws SQLException {
		boolean result = false;
		String sql = "SELECT * baja_tension WHERE CODIGO = ?"; 
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, key);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
			baja = new BajaTension();
			baja.setId(rs.getString("ID"));
			baja.setTransformador(rs.getString("TRANSFORMADOR"));
			baja.setPoste_material(rs.getString("POSTE_MATERIAL"));
			baja.setPoste_altura(rs.getString("POSTE_ALTURA"));
			baja.setPoste_compartido(rs.getString("POSTE_COMPARTIDO"));
			baja.setCaja_tipo(rs.getString("CAJA_TIPO"));
			baja.setCaja_ductos(rs.getString("CAJA_DUCTOS"));
			baja.setCaja_compartida(rs.getString("CAJA_COMPARTIDA"));
			baja.setTierra(rs.getString("TIERRA"));
			baja.setCantidad_usuarios(rs.getString("CANTIDAD_USUARIOS"));
			baja.setAp_tipo(rs.getString("AP_TIPO"));
			baja.setAp_cantidad(rs.getString("AP_CANTIDAD"));
			baja.setAp_potencia(rs.getString("AP_POTENCIA"));
			baja.setTramo_nodo_inicial(rs.getString("TRAMO_NODO_INICIAL"));
			baja.setTramo_nodo_final(rs.getString("TRAMO_NODO_FINAL"));
			baja.setTramo_tipo(rs.getString("TRAMO_TIPO"));
			baja.setTramo_longitud(rs.getString("TRAMO_LONGITUD"));
			baja.setFase_tipo(rs.getString("FASE_TIPO"));
			baja.setFase_conductores(rs.getString("FASE_CONDUCTORES"));
			baja.setFase_calibre(rs.getString("FASE_CALIBRE"));
			baja.setFase_material(rs.getString("FASE_MATERIAL"));
			baja.setNeutro_calibre(rs.getString("NEUTRO_CALIBRE"));
			baja.setNeutro_material(rs.getString("NEUTRO_MATERIAL"));
			baja.setAp_calibre(rs.getString("AP_CALIBRE"));
			baja.setAp_material(rs.getString("AP_MATERIAL"));
			baja.setNotas(rs.getString("NOTAS"));
			baja.setUsuario(rs.getString("USUARIO"));
			baja.setFecha_sistema(rs.getString("FECHA_SISTEMA"));
			result = true;
		}
		return result;
	}
	
	public ArrayList<BajaTension> List() throws SQLException {
		ArrayList<BajaTension> lista = new ArrayList<BajaTension>();
		String sql = "SELECT * baja_tension ORDER BY FECHA_SISTEMA"; 
		ResultSet rs = conexion.Query(sql);
		if (rs.next()) {
			BajaTension baja = new BajaTension();
			baja.setId(rs.getString("ID"));
			baja.setTransformador(rs.getString("TRANSFORMADOR"));
			baja.setPoste_material(rs.getString("POSTE_MATERIAL"));
			baja.setPoste_altura(rs.getString("POSTE_ALTURA"));
			baja.setPoste_compartido(rs.getString("POSTE_COMPARTIDO"));
			baja.setCaja_tipo(rs.getString("CAJA_TIPO"));
			baja.setCaja_ductos(rs.getString("CAJA_DUCTOS"));
			baja.setCaja_compartida(rs.getString("CAJA_COMPARTIDA"));
			baja.setTierra(rs.getString("TIERRA"));
			baja.setCantidad_usuarios(rs.getString("CANTIDAD_USUARIOS"));
			baja.setAp_tipo(rs.getString("AP_TIPO"));
			baja.setAp_cantidad(rs.getString("AP_CANTIDAD"));
			baja.setAp_potencia(rs.getString("AP_POTENCIA"));
			baja.setTramo_nodo_inicial(rs.getString("TRAMO_NODO_INICIAL"));
			baja.setTramo_nodo_final(rs.getString("TRAMO_NODO_FINAL"));
			baja.setTramo_tipo(rs.getString("TRAMO_TIPO"));
			baja.setTramo_longitud(rs.getString("TRAMO_LONGITUD"));
			baja.setFase_tipo(rs.getString("FASE_TIPO"));
			baja.setFase_conductores(rs.getString("FASE_CONDUCTORES"));
			baja.setFase_calibre(rs.getString("FASE_CALIBRE"));
			baja.setFase_material(rs.getString("FASE_MATERIAL"));
			baja.setNeutro_calibre(rs.getString("NEUTRO_CALIBRE"));
			baja.setNeutro_material(rs.getString("NEUTRO_MATERIAL"));
			baja.setAp_calibre(rs.getString("AP_CALIBRE"));
			baja.setAp_material(rs.getString("AP_MATERIAL"));
			baja.setNotas(rs.getString("NOTAS"));
			baja.setUsuario(rs.getString("USUARIO"));
			baja.setFecha_sistema(rs.getString("FECHA_SISTEMA"));
			
			lista.add(baja);

		}
		return lista;
	}

}
